/**
 * Copyright (c) 2007,中企动力华南研发中心<br>
 * All rights reserved.
 */
package com.ce.pms.charge.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;

import com.ce.pms.base.dao.IPmsBaseDao;
import com.ce.pms.charge.model.CharStaChoDomain;
import com.ce.pms.charge.vo.CharStaChoFixedVO;
import com.ce.pms.charge.vo.ChargeStaChoVO;
import com.sitechasia.webx.core.support.Page;

/**
 * 功能描述：房间标准选用常规费用持久层<br>
 * @author 罗军林 创建日期：2008-8-7
 */
public interface ICharStoChoGeneralDao extends IPmsBaseDao<CharStaChoDomain>{
	/**
	 * 功能描述:查找指定房号的所有房间标准选用<br>
	 * @param houseId
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-10-22<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public List<CharStaChoDomain> queryCharStaChoByHouseId(Long houseId);

	/**
	 * 功能描述:查询满足条件的收费项目<br>
	 * @param condition
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-8-7<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public Page queryCharStoCho(ChargeStaChoVO condition);

	/**
	 * 功能描述:增加一个收费标准选用<br>
	 * @param charStaChoMeterVO<br>
	 * Create author:罗军林<br>
	 * Create on:2008-8-12<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public void addCharStaCho(ChargeStaChoVO charStaChoVO,Map<Long,BigDecimal> chargeAmts);

	/**
	 * 功能描述:当项目ID、房号ID相同时，返回true<br>
	 * 注：如果为修改时要过滤oldCondition条件
	 * @param condition
	 * @param oldCondition
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-8-13<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public Boolean checkExistCharStoChoGeneral(ChargeStaChoVO condition,ChargeStaChoVO oldCondition);

	/**
	 * 功能描述:找指定收费项目是否已经被房间选用表引用<br>
	 * @param staId
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-8-20<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public boolean checkExistCharStoChoByStaId(Long staId);

	/**
	 * 功能描述:获取指定收费标准且已经进行房间标准选用的房号ID,返回ID串。如 1,2,3<br>
	 * @param charStaId
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-10-10<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public String getHouseIdsByCharStaId(Long charStaId);

	/**
	 * 功能描述:更新指定标准、房间的费用。<br>
	 * @param chargeStaId
	 * @param chargeAmts 房间与费用的MAP<br>
	 * Create author:罗军林<br>
	 * Create on:2008-10-10<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public void updateCharStoAmt(Long chargeStaId,Map<Long,BigDecimal> chargeAmts);

	/**
	 * 功能描述:检查指定房间是否选用过指定类型的收费项目<br>
	 * @param chargeType
	 * @param houseId
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-10-10<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public boolean checkExistsCharStaCho(String chargeType,Long houseId);
}
